package com.sxbbc.common.core.mapper.jz;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sxbbc.common.core.entity.jz.AppHomeRecommend;
import com.sxbbc.common.core.entity.jz.ProcMain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sxbbc.common.core.utils.BasePage;
import org.apache.ibatis.annotations.Param;

import java.util.Set;

/**
 * <p>
 * 商品信息主表 Mapper 接口
 * </p>
 *
 * @author leehao
 * @since 2019-05-24
 */
public interface ProcMainMapper extends BaseMapper<ProcMain> {

    /**
     * 查询推荐商品 查询到规格
     * @param page
     * @param procMain
     * @author leehao
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.sxbbc.common.core.entity.jz.AppHomeRecommend>
     */
    IPage<AppHomeRecommend> queryRecommendProcSku(BasePage page, @Param("procMain") ProcMain procMain);

    /**
     * 查询推荐商品 查询到商品
     * @param page
     * @param procMain
     * @author leehao
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.sxbbc.common.core.entity.jz.AppHomeRecommend>
     */
    IPage<AppHomeRecommend> queryRecommendProcMain(BasePage page, @Param("procMain") ProcMain procMain);

    /**
     * 查询商品的已售库存
     * 已售库存=sku各库存+虚拟已售
     *
     * @param proCode 商品编码
     * @return java.lang.Integer
     * @author leehao
     */
    Integer queryProcSaleQty(@Param("proCode") String proCode);

    /**
     * 查询用户消费习惯
     * @param page 分页
     * @param secondSet 二级分类ID的set集合
     * @param cid 用户id 用户收藏排序
     * @return 分页对象
     * @author leehao
     */
    IPage<ProcMain> queryCustomerLikeByBuyRecord(BasePage<ProcMain> page, @Param("secondSet") Set<String> secondSet, @Param("cid")Integer cid);


    /**
     * 根据用户浏览记录
     * @param page
     * @param cid
     * @return
     */
    IPage<ProcMain> queryCustomerLikeByFootPrint(BasePage<ProcMain> page,  @Param("cid")Integer cid);

    /**
     * 猜你喜欢部分 - 查询默认的产品分页数据 只查询普通商品
     * 当cid为空的情况下
     * @param page 分页
     * @author leehao
     * @return 分页的商品对象
     */
    IPage<ProcMain> queryNormalCustomerLike(BasePage<ProcMain> page);

    /**
     * 查询商家商品
     * @param procMain
     * @return
     * @author xiaoky
     */
	IPage<ProcMain> queryBusinessProduct(BasePage<ProcMain> page, @Param("param")ProcMain procMain);
}
